package com.lnsoft.cac.server.handle.codec.frameMessage;


import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import lombok.Data;

@Data
/**
 * 监测数据-日/月 统计数据-统计条目
 * */
public class VoltageDayMon_Data {
    private int Stat_Time;                  //4byte     采集时间（世纪秒，解析到日，指监测数据的采集日期）
    private byte[] DQualified_rate;         //3byte     电压合格率（单位：％ ，数据格式参见A.3.2）
    private byte[] DOvercap_rate;           //3byte     电压越上限率（单位：％，数据格式参见A.3.2）
    private byte[] DUnderlower_rate;        //3byte     电压越下限率（单位：％，数据格式参见A.3.2）
    private int DStatistical_time;          //2byte     电压统计时间（无符号整数，单位：分钟）
    private int DQualified_time;            //2byte     电压合格时间（无符号整数，单位：分钟）
    private int DOvercap_time;              //2byte     电压越上限时间（无符号整数，单位：分钟）
    private int DUnderlower_time;           //2byte     电压越下限时间（无符号整数，单位：分钟）
    private byte[] DAverage_value;          //4byte     电压平均值（单位：V，数据格式参见A.3.1）
    private byte[] DMini_value;             //4byte     电压最小值（单位：V，数据格式参见A.3.1）
    private int DMini_value_Time;           //4byte     电压最小值发生时间（世纪秒，解析到分钟）
    private byte[] DMax_value;              //4byte     电压最大值（单位：V，数据格式参见A.3.1）
    private int DMax_value_time;            //4byte     电压最大值发生时间（世纪秒，解析到分钟）


    public ByteBuf toByteBuf() throws Exception{
        if (Stat_Time < 0) {
            throw new Exception("采集时间设置异常");
        }

        //
        ByteBuf bf = Unpooled.buffer(41);
        bf.writeIntLE(Stat_Time);
        bf.writeBytes(DQualified_rate);
        bf.writeBytes(DOvercap_rate);
        bf.writeBytes(DUnderlower_rate);
        bf.writeShortLE(DStatistical_time);
        bf.writeShortLE(DQualified_time);
        bf.writeShortLE(DOvercap_time);
        bf.writeShortLE(DUnderlower_time);
        bf.writeBytes(DAverage_value);
        bf.writeBytes(DMini_value);
        bf.writeIntLE(DMini_value_Time);
        bf.writeBytes(DMax_value);
        bf.writeIntLE(DMax_value_time);
        return bf;
    }
}
